package com.java.d8_mytest_ysy.demo2;

import java.io.File;

/*windows资源管理器中会展示目录中的内容结构,但是java并没有提供展示目录结构的操作,
本案例完成按照指定格式打印文件夹的目录结构(包含子文件夹和文件),效果如下图:*/
public class Test {
    public static void main(String[] args) {
        printDir(new File("D:\\soft\\Nwt\\resv"),0);
    }
    //1、定义打印文件/文件夹名称的方法printFileName
    private static void printFileName(int num,File file) {
       //1.1、for循环打印num个制表符tab(java中用"\t"表示),不带换行
        for (int i = 0; i < num; i++) {
            System.out.print("\t");
        }
       // 1.2、打印File对象名称,前面拼接|-,需要换行
        System.out.println("|-"+file.getName());
    }
    //2、定义打印文件夹方法printDir
    public static void printDir(File file,int num){
        //2.1、 调用printFileName方法打印文件夹名称
        printFileName(num,file);
        num++;
        //2.2、 获取源文件夹中的所有的文件和文件夹对应的File对象数组
        File[] files = file.listFiles();
        //2.3、 判断,如果File对象数组是null或者没有内容,结束方法
        if (files == null||files.length<0) {
            return;
        }
        //2.4、 遍历File对象数组
        for (File file1 : files) {
        //2.5、 判断,如果当前File对象是文件,调用printFileName方法,打印文件名称
            if (file1.isFile()) {
                printFileName(num,file1);
            }else {
        //2.6 、判断,如果当前File对象是文件夹,递归调用printDir方法
                printDir(file1,num);
            }
        }
    }
}
